package com.better.frontend.Iservice.studentScore;


import com.better.backend.dataComputingService.model.stuScore.ExamStudentScoreCalModel;
import com.better.backend.mqReceiverService.studentRecever.model.ScoreReceverModel;
import com.better.common.base.ServiceResponse;
import com.better.frontend.model.studentScore.ScoreAyalysModel;
import com.better.frontend.model.studentScore.ScoreParam;
import com.better.frontend.model.studentScore.StuCompModel;
import com.better.frontend.vo.studentScore.ExamStudentScoreCalVO;
import com.better.frontend.vo.studentScore.ScoreAnaySizeParam;
import com.better.frontend.vo.studentScore.StudentScoreAyalysVo;
import org.springframework.data.domain.Page;
import org.springframework.web.multipart.MultipartFile;


/**
 * Created by wfm on 2017/11/11.
 */
public interface StudentScoreService<T> {
    /**
     * 查看成绩
     * @author:
     * @date :2017/11/18
     */
     Page<ExamStudentScoreCalModel> getStudentScore(ExamStudentScoreCalModel scoreModel, Integer pageIndex, Integer pageSize);

    /**
     * 个人成绩分析
     *
     * @author:
     * @date :2017/11/18
     */
     T getScoreAyalyse(ScoreAyalysModel scoreAyalysModel);

        /**
         *  个人查询历史考试走势
         * @param compModel
         * @return
         */
        ServiceResponse getCompareExam(StuCompModel compModel);

    /**
     *  学生历次单科成绩走势
     * @param compModel
     * @return
     */
    ServiceResponse StuComperBySubject(StuCompModel compModel);

    /**
     *  导入成绩分析
     * @param scoreReceverModel 成绩 model
     * @param excelFile 导入excel
     * @return
     */
     ServiceResponse addScoreReceverModel(ScoreReceverModel scoreReceverModel, MultipartFile excelFile) throws Exception;

    /**
     *  使用考试id获得数据
     * @param examId
     * @return
     */
     ServiceResponse getItemsByExamId(String examId);

    /**
     *  发布成绩
     * @param examId
     * @return
     */
    ServiceResponse publishScore(String examId);

    /**
     *  查询考试导入详情
     * @param examId
     * @return
     */
    ServiceResponse ListSubjectDetails(String examId);

    /**
     *  成绩导入详情
     * @param examId
     * @return
     */
    ServiceResponse importDetails(String examId,String classId,String subjectId);

    /**
     *  个人分析分数段
     * @param scoreParam
     * @return
     */
    ServiceResponse scoreAnalysis(ScoreAnaySizeParam scoreParam);

    /**
     *  踩线生分析分数段
     * @param scoreParam
     * @return
     */
    ServiceResponse footAnalysis(ScoreAnaySizeParam scoreParam);

    /**
     *  判断是否计算完成
     * @param examId
     * @return
     */
    ServiceResponse finishCal(String examId);
}
